package com.chen.single;

// 懒汉式单例
public class LazyMan {

    private LazyMan() {}

    // 加上volatile保证原子性
    private volatile static LazyMan lazyMan;

    // 懒汉很懒，需要用对象时才创建
    // 双重检测锁模式的懒汉式单例，简称DCL懒汉式
    public static LazyMan getInstance() {
        if (lazyMan == null) {
            synchronized (LazyMan.class) {
                if (lazyMan == null) {
                    // 不是一个原子性操作
                    // 1. 分配内存空间
                    // 2、执行构造方法，初始化对象
                    // 3、把这个对象指向这个空间
                    lazyMan = new LazyMan();
                }
            }
        }
        return lazyMan;
    }

}
